package p234

import node.ListNode

/**
 * <pre>
 *     3，递归方式解决
我们知道，如果对链表逆序打印可以这样写

private void printListNode(ListNode head) {
if (head == null)
return;
printListNode(head.next);
System.out.println(head.val);
}
也就是说最先打印的是链表的尾结点，他是从后往前打印的，如果以后谁再给你说单向链表不能从后往前遍历，
你就拿这段代码怼他，哈哈。看到这里是不是有灵感了，我们来对上面的对面进行改造一下

 * </pre>
 */
class RecursiveStragty : Stragty {
    var tempt: ListNode? = null

    override fun isPalindrome(head: ListNode?): Boolean {
        tempt = head
        return check(head)
    }

    fun check(head: ListNode?): Boolean {
        if (head == null)
            return true
        var result = check(head.next) && (tempt!!.`val` == head.`val`)
        tempt = tempt!!.next
        return result
    }
}